package LetCode;

/**
 * @author: lwt
 * @date: 2025/8/18 16:29
 * @description:
 */
public class day8 {
    public static void main(String[] args) {
        /*
        * [2,3,1,1,4]
        * */
        int[] nums = {2,3,1,1,4};

//        int[] nums = {3,2,1,0,4};
//        int[] nums = {2,0};
        boolean result = canjump(nums);
        System.out.println(result);
    }

//    private static boolean canjump(int[] nums) {
//        int i = 0;  //位于初始位置
//        int n = nums.length-1; //下标的最大值
//        while (i<n){
//            if (i+nums[i]<=n) {  //下标加当前位置的值小于数组下标
//                i = i+nums[i];
//                if (i == n){
//                    return true;
//                }
//            }
//            if (nums[i] == 0 && (i +nums[i]) <n) return false;
//        }
//        return false;
//    }

    public static boolean canjump(int[] nums) {
        int i = 0;
        int n = nums.length -1;
        if( n == 0) return true;
        while(i<n){
            if(i+nums[i] <=n){
                i = i+nums[i];
                if(i == n){
                    return true;
                }
            }else {
                break;
            }
            if(nums[i] == 0 && (i+nums[i]) <n){
                return false;
            }
        }
        return false;
    }
}
